package APPyanghuanyu;

import java.lang.reflect.Method;

import static sun.misc.Version.println;

public class APPRef {
    public static void main(String[] args) throws Exception {
        //类的完整限定名 = 包名 + 类名
        //加载指定名称（类的完整限定名）的类
        //成功加载后，得到的C可U以代表User类本身，称之为类的对象
        //补：当泛型对象未知或不确定的时候，可以使用？表示，
        Class<?> C = Class.forName("APPyanghuanyu.User");

        //【实例化】u 就是User类的实例
        //使用类对象C的newInstance方法生成User类的实例
        Object u = C.newInstance();

        //【写】通过实例u的setName方法来为其name属性赋值
        //使用类对象C的getMethod方法来查找User类中的setName方法
        //
        //
        Method setName = C.getMethod("setName", String.class);

        setName.invoke(u, "Jenkins");


        //【读】通过实例u的getName方法来获取其name属性
        Method getName = C.getMethod("getName");
        Object name = getName.invoke(u);
        System.out.println(name);


    }
}
